package cn.kuporo.seckill.dubbo.interfaces.goods;

import cn.kuporo.seckill.common.cache.model.SeckillBusinessCache;
import cn.kuporo.seckill.common.model.dto.SeckillGoodsDTO;

/**
 * @author: kuporo
 * @since: 2025/7/7
 * @description:
 */
public interface SeckillGoodsDubboService {
    /**
     * 根据id和版本号获取商品详情
     */
    SeckillGoodsDTO getSeckillGoods(Long id, Long version);

    /**
     * 扣减数据库库存
     */
    boolean updateDbAvailableStock(Integer count, Long id);

    /**
     * 获取商品的可用库存
     */
    SeckillBusinessCache<Integer> getAvailableStock(Long goodsId, Long version);


    /**
     * 根据商品id获取可用库存 基于DB的方式
     */
    Integer getAvailableStockById(Long goodsId);
}
